package cn.iocoder.yudao.module.ent.service.receivenumber;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.ent.controller.admin.receivenumber.vo.ReceiveNumberPageReqVO;
import cn.iocoder.yudao.module.ent.controller.admin.receivenumber.vo.ReceiveNumberSaveReqVO;
import cn.iocoder.yudao.module.ent.controller.admin.receivenumber.vo.ReceiveNumberUpdateReqVO;
import cn.iocoder.yudao.module.ent.dal.dataobject.receivenumber.ReceiveNumberDO;
import cn.iocoder.yudao.module.ent.mq.message.receive.ReceiveSendMessage;

import javax.validation.Valid;
import java.util.List;

/**
 * 联系号码 Service 接口
 *
 * @author 我
 */
public interface ReceiveNumberService {

    /**
     * 创建联系号码
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createReceiveNumber(@Valid ReceiveNumberSaveReqVO createReqVO);

    /**
     * 更新联系号码
     *
     * @param updateReqVO 更新信息
     */
    void updateReceiveNumber(@Valid ReceiveNumberUpdateReqVO updateReqVO);

    /**
     * 简单更新
     * @param data
     * @since 2024-09-14
     * @author PetePower
     */
    void simpleUpdateReceiveNumber(ReceiveNumberDO data);

    /**
     * 删除联系号码
     *
     * @param id 编号
     */
    void deleteReceiveNumber(Long id);

    void batchDeleteReceiveNumberByEntId(String entId);

    /**
     * 获得联系号码
     *
     * @param id 编号
     * @return 联系号码
     */
    ReceiveNumberDO getReceiveNumber(Long id);


    ReceiveNumberDO getReceiveNumber(String entId, String number);



    List<ReceiveNumberDO> getReceiveNumberList(String entId);

    /**
     * 获得联系号码分页
     *
     * @param pageReqVO 分页查询
     * @return 联系号码分页
     */
    PageResult<ReceiveNumberDO> getReceiveNumberPage(ReceiveNumberPageReqVO pageReqVO);

    /**
     * 消费消息
     *
     * @param message 消息
     * @author PetePower
     * @since 2024-02-29
     */
    void doCreateReceiveNumber(ReceiveSendMessage message);

}